[INFO] cloning repository https://github.com/stevensu1977/nanobot-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/stevensu1977/nanobot-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstevensu1977%2Fnanobot-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstevensu1977%2Fnanobot-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9bcee573ee98a1fcbedd1225dfdfb53302fc1a0e
[INFO] testing stevensu1977/nanobot-rs against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstevensu1977%2Fnanobot-rs" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/stevensu1977/nanobot-rs
[INFO] finished tweaking git repo https://github.com/stevensu1977/nanobot-rs
[INFO] tweaked toml for git repo https://github.com/stevensu1977/nanobot-rs written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/stevensu1977/nanobot-rs on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/stevensu1977/nanobot-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5994ff16485e7e48536c51242fd481c399bbfe7fdaf81d1a2c1b1fef08334c7d
[INFO] running `Command { std: "docker" "start" "-a" "5994ff16485e7e48536c51242fd481c399bbfe7fdaf81d1a2c1b1fef08334c7d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5994ff16485e7e48536c51242fd481c399bbfe7fdaf81d1a2c1b1fef08334c7d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5994ff16485e7e48536c51242fd481c399bbfe7fdaf81d1a2c1b1fef08334c7d", kill_on_drop: false }`
[INFO] [stdout] 5994ff16485e7e48536c51242fd481c399bbfe7fdaf81d1a2c1b1fef08334c7d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4d85f908a75d930943d89b1d752bb195a48fca424851da138b423b03fdce6eb7
[INFO] running `Command { std: "docker" "start" "-a" "4d85f908a75d930943d89b1d752bb195a48fca424851da138b423b03fdce6eb7", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling aws-lc-rs v1.15.4
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.16
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling syn v2.0.116
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling winnow v0.6.26
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling email-encoding v0.4.1
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling nom v8.0.0
[INFO] [stderr]    Compiling nibble_vec v0.1.0
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling endian-type v0.1.2
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling email_address v0.2.9
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling quoted_printable v0.5.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling radix_trie v0.2.1
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling clap_builder v4.5.59
[INFO] [stderr]    Compiling mail-parser v0.9.4
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling number_prefix v0.4.0
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]    Compiling fd-lock v4.0.4
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling aws-lc-sys v0.37.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling stacker v0.1.23
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr]    Compiling rustyline v15.0.0
[INFO] [stderr]    Compiling ar_archive_writer v0.5.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling psm v0.1.30
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling chumsky v0.9.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling clap v4.5.59
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling cron v0.15.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling nanobot-core v0.1.0 (/opt/rustwide/workdir/crates/nanobot-core)
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tungstenite v0.26.2
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling lettre v0.11.19
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling tokio-tungstenite v0.26.2
[INFO] [stderr]    Compiling nanobot-providers v0.1.0 (/opt/rustwide/workdir/crates/nanobot-providers)
[INFO] [stderr]    Compiling nanobot-channels v0.1.0 (/opt/rustwide/workdir/crates/nanobot-channels)
[INFO] [stderr]    Compiling nanobot-agent v0.1.0 (/opt/rustwide/workdir/crates/nanobot-agent)
[INFO] [stderr]    Compiling nanobot-cli v0.1.0 (/opt/rustwide/workdir/crates/nanobot-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 01s
[INFO] running `Command { std: "docker" "inspect" "4d85f908a75d930943d89b1d752bb195a48fca424851da138b423b03fdce6eb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4d85f908a75d930943d89b1d752bb195a48fca424851da138b423b03fdce6eb7", kill_on_drop: false }`
[INFO] [stdout] 4d85f908a75d930943d89b1d752bb195a48fca424851da138b423b03fdce6eb7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] bd12a53f9845941b1ab87286de6b98c7ea463610d7ce8ceaff93bd8e84073e03
[INFO] running `Command { std: "docker" "start" "-a" "bd12a53f9845941b1ab87286de6b98c7ea463610d7ce8ceaff93bd8e84073e03", kill_on_drop: false }`
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling nanobot-providers v0.1.0 (/opt/rustwide/workdir/crates/nanobot-providers)
[INFO] [stderr]    Compiling nanobot-channels v0.1.0 (/opt/rustwide/workdir/crates/nanobot-channels)
[INFO] [stderr]    Compiling nanobot-core v0.1.0 (/opt/rustwide/workdir/crates/nanobot-core)
[INFO] [stderr]    Compiling nanobot-agent v0.1.0 (/opt/rustwide/workdir/crates/nanobot-agent)
[INFO] [stderr]    Compiling nanobot-cli v0.1.0 (/opt/rustwide/workdir/crates/nanobot-cli)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 17.43s
[INFO] running `Command { std: "docker" "inspect" "bd12a53f9845941b1ab87286de6b98c7ea463610d7ce8ceaff93bd8e84073e03", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bd12a53f9845941b1ab87286de6b98c7ea463610d7ce8ceaff93bd8e84073e03", kill_on_drop: false }`
[INFO] [stdout] bd12a53f9845941b1ab87286de6b98c7ea463610d7ce8ceaff93bd8e84073e03
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 2dfb0159699d4b54d288566f894d570853b2c6eda574fbf0c7589ba32607e07c
[INFO] running `Command { std: "docker" "start" "-a" "2dfb0159699d4b54d288566f894d570853b2c6eda574fbf0c7589ba32607e07c", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.49s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/nanobot_agent-2c8155277f96f60b)
[INFO] [stdout] 
[INFO] [stdout] running 61 tests
[INFO] [stdout] test agent_loop::tests::test_format_messages_for_consolidation ... ok
[INFO] [stdout] test agent_loop::tests::test_format_messages_with_tools ... ok
[INFO] [stdout] test context::tests::test_add_assistant_message_omits_empty_content ... ok
[INFO] [stdout] test context::tests::test_add_tool_result ... ok
[INFO] [stdout] test context::tests::test_guess_mime ... ok
[INFO] [stdout] test skills::tests::test_strip_frontmatter_none ... ok
[INFO] [stdout] test tools::base::tests::test_validate_params_range ... ok
[INFO] [stdout] test tools::base::tests::test_validate_params_type_mismatch ... ok
[INFO] [stdout] test skills::tests::test_escape_xml ... ok
[INFO] [stdout] test tools::base::tests::test_validate_params_valid ... ok
[INFO] [stdout] test tools::cron::tests::test_add_job_at ... ok
[INFO] [stdout] test tools::cron::tests::test_add_job_every ... ok
[INFO] [stdout] test tools::cron::tests::test_add_job_validation_no_context ... ok
[INFO] [stdout] test tools::cron::tests::test_add_job_validation_tz_without_cron ... ok
[INFO] [stdout] test tools::cron::tests::test_add_job_validation_no_message ... ok
[INFO] [stdout] test tools::base::tests::test_validate_params_enum ... ok
[INFO] [stdout] test tools::cron::tests::test_tool_schema ... ok
[INFO] [stdout] test skills::tests::test_list_skills_empty ... ok
[INFO] [stdout] test skills::tests::test_load_skill ... ok
[INFO] [stdout] test skills::tests::test_list_skills_with_skill ... ok
[INFO] [stdout] test tools::base::tests::test_validate_params_missing_required ... ok
[INFO] [stdout] test context::tests::test_identity_contains_workspace ... ok
[INFO] [stdout] test tools::filesystem::tests::test_edit_file_multiple_occurrences ... ok
[INFO] [stdout] test skills::tests::test_strip_frontmatter ... ok
[INFO] [stdout] test tools::cron::tests::test_tool_name ... ok
[INFO] [stdout] test context::tests::test_build_messages_with_session_info ... ok
[INFO] [stdout] test tools::filesystem::tests::test_allowed_dir_restriction ... ok
[INFO] [stdout] test tools::filesystem::tests::test_list_dir ... ok
[INFO] [stdout] test tools::filesystem::tests::test_read_file ... ok
[INFO] [stdout] test tools::cron::tests::test_execute_list_empty ... ok
[INFO] [stdout] test tools::filesystem::tests::test_read_file_not_found ... ok
[INFO] [stdout] test tools::mcp::tests::test_response_parsing ... ok
[INFO] [stdout] test tools::mcp::tests::test_response_parsing_empty ... ok
[INFO] [stdout] test tools::registry::tests::test_get_definitions ... ok
[INFO] [stdout] test tools::cron::tests::test_add_job_cron ... ok
[INFO] [stdout] test context::tests::test_build_messages_structure ... ok
[INFO] [stdout] test tools::mcp::tests::test_jsonrpc_request ... ok
[INFO] [stdout] test tools::registry::tests::test_register_and_execute ... ok
[INFO] [stdout] test subagent::tests::test_subagent_prompt_contains_workspace ... ok
[INFO] [stdout] test tools::filesystem::tests::test_edit_file_exact_match ... ok
[INFO] [stdout] test context::tests::test_bootstrap_files ... ok
[INFO] [stdout] test tools::filesystem::tests::test_write_file ... ok
[INFO] [stdout] test tools::mcp::tests::test_tool_name_format ... ok
[INFO] [stdout] test tools::registry::tests::test_execute_not_found ... ok
[INFO] [stdout] test tools::web::tests::test_validate_url_invalid ... ok
[INFO] [stdout] test tools::web::tests::test_validate_url_invalid_scheme ... ok
[INFO] [stdout] test tools::web::tests::test_decode_entities ... ok
[INFO] [stdout] test skills::tests::test_get_skill_metadata ... ok
[INFO] [stdout] test tools::cron::tests::test_execute_remove_not_found ... ok
[INFO] [stdout] test tools::web::tests::test_validate_url_valid ... ok
[INFO] [stdout] test tools::shell::tests::test_exec_path_traversal ... ok
[INFO] [stdout] test tools::shell::tests::test_exec_denied_pattern ... ok
[INFO] [stdout] test tools::shell::tests::test_exec_denied_format ... ok
[INFO] [stdout] test tools::shell::tests::test_exec_exit_code ... ok
[INFO] [stdout] test tools::shell::tests::test_exec_basic ... ok
[INFO] [stdout] test tools::web::tests::test_strip_tags ... ok
[INFO] [stdout] test tools::web::tests::test_strip_tags_script ... ok
[INFO] [stdout] test tools::shell::tests::test_exec_timeout ... ok
[INFO] [stdout] test tools::web::tests::test_html_to_markdown_links ... ok
[INFO] [stdout] test tools::web::tests::test_html_to_markdown_headings ... ok
[INFO] [stdout] test tools::web::tests::test_html_to_markdown_lists ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 61 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.97s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/nanobot_channels-cecde5fb5c826564)
[INFO] [stdout] 
[INFO] [stdout] running 97 tests
[INFO] [stdout] test dingtalk::tests::test_access_token_cache ... ok
[INFO] [stdout] test dingtalk::tests::test_callback_parsing ... ok
[INFO] [stdout] test dingtalk::tests::test_markdown_message_format ... ok
[INFO] [stdout] test discord::tests::test_attachment_size_check ... ok
[INFO] [stdout] test discord::tests::test_bot_message_filtering ... ok
[INFO] [stdout] test discord::tests::test_reply_payload ... ok
[INFO] [stdout] test email::tests::test_channel_name ... ok
[INFO] [stdout] test email::tests::test_consent_check ... ok
[INFO] [stdout] test email::tests::test_config_validation ... ok
[INFO] [stdout] test discord::tests::test_sender_extraction ... ok
[INFO] [stdout] test email::tests::test_reply_subject ... ok
[INFO] [stdout] test email::tests::test_reply_subject_custom_prefix ... ok
[INFO] [stdout] test feishu::tests::test_extract_post_text_at ... ok
[INFO] [stdout] test feishu::tests::test_extract_service_id ... ok
[INFO] [stdout] test email::tests::test_reply_subject_empty ... ok
[INFO] [stdout] test feishu::tests::test_extract_post_text_direct ... ok
[INFO] [stdout] test feishu::tests::test_extract_post_text_localized ... ok
[INFO] [stdout] test dingtalk::tests::test_allowlist_check ... ok
[INFO] [stdout] test mochat::tests::test_build_buffered_body_group ... ok
[INFO] [stdout] test mochat::tests::test_build_buffered_body_single ... ok
[INFO] [stdout] test manager::tests::test_manager_telegram_no_token ... ok
[INFO] [stdout] test mochat::tests::test_mention_detection_content ... ok
[INFO] [stdout] test manager::tests::test_manager_no_channels ... ok
[INFO] [stdout] test mochat::tests::test_mention_detection_meta ... ok
[INFO] [stdout] test mochat::tests::test_normalize_content_object ... ok
[INFO] [stdout] test feishu::tests::test_parse_md_table ... ok
[INFO] [stdout] test mochat::tests::test_normalize_content_string ... ok
[INFO] [stdout] test mochat::tests::test_resolve_target_empty ... ok
[INFO] [stdout] test mochat::tests::test_resolve_target_panel ... ok
[INFO] [stdout] test feishu::tests::test_pb_ping_frame_encode ... ok
[INFO] [stdout] test mochat::tests::test_normalize_content_null ... ok
[INFO] [stdout] test qq::tests::test_message_dedup ... ok
[INFO] [stdout] test feishu::tests::test_pb_frame_roundtrip ... ok
[INFO] [stdout] test qq::tests::test_sender_extraction ... ok
[INFO] [stdout] test feishu::tests::test_card_content ... ok
[INFO] [stdout] test qq::tests::test_sender_extraction_openid ... ok
[INFO] [stdout] test mochat::tests::test_resolve_target_session ... ok
[INFO] [stdout] test mochat::tests::test_resolve_target_group ... ok
[INFO] [stdout] test mochat::tests::test_resolve_target_plain_id ... ok
[INFO] [stdout] test slack::tests::test_mrkdwn_empty ... ok
[INFO] [stdout] test slack::tests::test_table_conversion ... ok
[INFO] [stdout] test slack::tests::test_mrkdwn_bold ... ok
[INFO] [stdout] test email::tests::test_html_to_text_complex ... ok
[INFO] [stdout] test email::tests::test_html_to_text ... ok
[INFO] [stdout] test slack::tests::test_mrkdwn_link ... ok
[INFO] [stdout] test telegram::formatting::tests::test_blockquotes_stripped ... ok
[INFO] [stdout] test telegram::formatting::tests::test_bold_conversion ... ok
[INFO] [stdout] test telegram::formatting::tests::test_empty_input ... ok
[INFO] [stdout] test telegram::formatting::tests::test_code_block ... ok
[INFO] [stdout] test telegram::formatting::tests::test_bold_underscore ... ok
[INFO] [stdout] test telegram::formatting::tests::test_inline_code ... ok
[INFO] [stdout] test telegram::formatting::tests::test_bullets ... ok
[INFO] [stdout] test slack::tests::test_dm_policy_allowlist ... ok
[INFO] [stdout] test mochat::tests::test_channel_name ... ok
[INFO] [stdout] test telegram::formatting::tests::test_html_entities_escaped ... ok
[INFO] [stdout] test telegram::formatting::tests::test_code_block_preserves_content ... ok
[INFO] [stdout] test telegram::formatting::tests::test_italic_no_match_inside_words ... ok
[INFO] [stdout] test telegram::formatting::tests::test_italic_conversion ... ok
[INFO] [stdout] test telegram::formatting::tests::test_split_message_at_newline ... ok
[INFO] [stdout] test telegram::formatting::tests::test_split_message_short ... ok
[INFO] [stdout] test telegram::formatting::tests::test_split_message_hard_cut ... ok
[INFO] [stdout] test telegram::formatting::tests::test_split_message_at_space ... ok
[INFO] [stdout] test telegram::tests::test_get_media_type_audio ... ok
[INFO] [stdout] test telegram::tests::test_get_extension_by_type ... ok
[INFO] [stdout] test telegram::tests::test_get_media_type_photo ... ok
[INFO] [stdout] test telegram::tests::test_get_media_type_voice ... ok
[INFO] [stdout] test telegram::tests::test_get_media_type_document ... ok
[INFO] [stdout] test telegram::tests::test_sender_id_with_username ... ok
[INFO] [stdout] test telegram::tests::test_sender_id_without_username ... ok
[INFO] [stdout] test telegram::formatting::tests::test_headers_stripped ... ok
[INFO] [stdout] test slack::tests::test_group_policy_allowlist ... ok
[INFO] [stdout] test feishu::tests::test_channel_name ... ok
[INFO] [stdout] test tests::test_is_allowed_empty_list ... ok
[INFO] [stdout] test tests::test_is_allowed_empty_parts_ignored ... ok
[INFO] [stdout] test tests::test_is_allowed_exact_match ... ok
[INFO] [stdout] test tests::test_is_allowed_denied ... ok
[INFO] [stdout] test tests::test_is_allowed_pipe_separated ... ok
[INFO] [stdout] test whatsapp::tests::test_channel_name ... ok
[INFO] [stdout] test telegram::tests::test_get_extension_with_mime ... ok
[INFO] [stdout] test whatsapp::tests::test_sender_id_lid_format ... ok
[INFO] [stdout] test whatsapp::tests::test_sender_id_phone_format ... ok
[INFO] [stdout] test whatsapp::tests::test_voice_message_replacement ... ok
[INFO] [stdout] test tests::test_is_allowed_pipe_no_match ... ok
[INFO] [stdout] test whatsapp::tests::test_sender_id_no_domain ... ok
[INFO] [stdout] test telegram::formatting::tests::test_links ... ok
[INFO] [stdout] test dingtalk::tests::test_channel_name ... ok
[INFO] [stdout] test telegram::formatting::tests::test_strikethrough ... ok
[INFO] [stdout] test slack::tests::test_dm_policy_open ... ok
[INFO] [stdout] test discord::tests::test_channel_name ... ok
[INFO] [stdout] test manager::tests::test_get_status ... ok
[INFO] [stdout] test slack::tests::test_channel_name ... ok
[INFO] [stdout] test manager::tests::test_manager_enabled_channels ... ok
[INFO] [stdout] test qq::tests::test_channel_name ... ok
[INFO] [stdout] test telegram::tests::test_channel_name ... ok
[INFO] [stdout] test telegram::transcription::tests::test_transcribe_missing_file ... ok
[INFO] [stdout] test telegram::transcription::tests::test_transcribe_empty_key ... ok
[INFO] [stdout] test telegram::transcription::tests::test_transcriber_new ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 97 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.95s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/nanobot-a2fd66047548baf7)
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test tests::test_is_exit_command_case_insensitive ... ok
[INFO] [stdout] test tests::test_is_exit_command_negative ... ok
[INFO] [stdout] test provider_factory::tests::test_make_provider_no_key ... ok
[INFO] [stdout] test tests::test_history_path_default ... ok
[INFO] [stdout] test tests::test_is_exit_command ... ok
[INFO] [stdout] test tests::test_onboard_creates_config ... ok
[INFO] [stdout] test tests::test_onboard_creates_dirs ... ok
[INFO] [stdout] test tests::test_cron_remove_not_found ... ok
[INFO] [stdout] test tests::test_onboard_no_overwrite ... ok
[INFO] [stdout] test tests::test_cron_list_empty ... ok
[INFO] [stdout] test provider_factory::tests::test_make_provider_fallback_to_configured ... ok
[INFO] [stdout] test provider_factory::tests::test_make_provider_with_anthropic_key ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/nanobot_core-237a425c609676b1)
[INFO] [stdout] 
[INFO] [stdout] running 57 tests
[INFO] [stdout] test config::tests::test_default_config_serializes_to_camel_case ... ok
[INFO] [stdout] test bus::tests::test_inbound_publish_consume ... ok
[INFO] [stdout] test config::tests::test_migrate_config_moves_restrict_to_workspace ... ok
[INFO] [stdout] test config::tests::test_openai_codex_field_name ... ok
[INFO] [stdout] test config::tests::test_deserialize_camel_case_json ... ok
[INFO] [stdout] test bus::tests::test_outbound_broadcast_to_multiple_subscribers ... ok
[INFO] [stdout] test config::tests::test_empty_json_uses_defaults ... ok
[INFO] [stdout] test bus::tests::test_stop ... ok
[INFO] [stdout] test config::tests::test_provider_is_configured ... ok
[INFO] [stdout] test config::tests::test_github_copilot_field_name ... ok
[INFO] [stdout] test cron::tests::test_schedule_every ... ok
[INFO] [stdout] test config::tests::test_extra_headers_deserialization ... ok
[INFO] [stdout] test cron::tests::test_schedule_cron_with_timezone ... ok
[INFO] [stdout] test config::tests::test_workspace_path_expansion ... ok
[INFO] [stdout] test cron::tests::test_schedule_at_future ... ok
[INFO] [stdout] test cron::tests::test_schedule_at_past ... ok
[INFO] [stdout] test config::tests::test_mcp_servers_deserialization ... ok
[INFO] [stdout] test cron::tests::test_schedule_cron_expression ... ok
[INFO] [stdout] test cron::tests::test_cron_service_status ... ok
[INFO] [stdout] test cron::tests::test_cron_store_roundtrip ... ok
[INFO] [stdout] test heartbeat::tests::test_heartbeat_file_path ... ok
[INFO] [stdout] test heartbeat::tests::test_is_heartbeat_empty_blank ... ok
[INFO] [stdout] test heartbeat::tests::test_is_heartbeat_empty_comments ... ok
[INFO] [stdout] test heartbeat::tests::test_is_heartbeat_empty_headers_only ... ok
[INFO] [stdout] test heartbeat::tests::test_is_heartbeat_empty_checkboxes ... ok
[INFO] [stdout] test heartbeat::tests::test_is_heartbeat_not_empty ... ok
[INFO] [stdout] test heartbeat::tests::test_is_heartbeat_not_empty_with_content ... ok
[INFO] [stdout] test cron::tests::test_schedule_invalid_cron ... ok
[INFO] [stdout] test cron::tests::test_schedule_every_zero ... ok
[INFO] [stdout] test memory::tests::test_append_history ... ok
[INFO] [stdout] test memory::tests::test_memory_context_empty ... ok
[INFO] [stdout] test memory::tests::test_memory_context_with_content ... ok
[INFO] [stdout] test session::tests::test_session_clear ... ok
[INFO] [stdout] test session::tests::test_session_get_history_limit ... ok
[INFO] [stdout] test cron::tests::test_cron_service_add_list_remove ... ok
[INFO] [stdout] test session::tests::test_session_path_generation ... ok
[INFO] [stdout] test types::tests::test_inbound_deserialization_defaults ... ok
[INFO] [stdout] test memory::tests::test_write_long_term_overwrites ... ok
[INFO] [stdout] test session::tests::test_metadata_line_has_type_field ... ok
[INFO] [stdout] test session::tests::test_list_sessions ... ok
[INFO] [stdout] test cron::tests::test_cron_service_persistence ... ok
[INFO] [stdout] test session::tests::test_session_add_message_with_extra ... ok
[INFO] [stdout] test types::tests::test_outbound_serialization ... ok
[INFO] [stdout] test types::tests::test_inbound_session_key ... ok
[INFO] [stdout] test utils::tests::test_parse_session_key_invalid ... ok
[INFO] [stdout] test utils::tests::test_expand_tilde ... ok
[INFO] [stdout] test utils::tests::test_safe_filename ... ok
[INFO] [stdout] test utils::tests::test_truncate_string ... ok
[INFO] [stdout] test utils::tests::test_timestamp_format ... ok
[INFO] [stdout] test utils::tests::test_parse_session_key_with_multiple_colons ... ok
[INFO] [stdout] test utils::tests::test_parse_session_key ... ok
[INFO] [stdout] test session::tests::test_jsonl_roundtrip ... ok
[INFO] [stdout] test config::tests::test_config_roundtrip ... ok
[INFO] [stdout] test session::tests::test_session_add_and_get_history ... ok
[INFO] [stdout] test bus::tests::test_take_inbound_receiver_only_once ... ok
[INFO] [stdout] test memory::tests::test_read_write_long_term ... ok
[INFO] [stdout] test bus::tests::test_publish_outbound_no_subscribers ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 57 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/nanobot_providers-9a320204836696ad)
[INFO] [stdout] 
[INFO] [stdout] running 24 tests
[INFO] [stdout] test registry::tests::test_find_by_model_none ... ok
[INFO] [stdout] test registry::tests::test_find_by_model_anthropic ... ok
[INFO] [stdout] test registry::tests::test_find_by_model_skips_gateways ... ok
[INFO] [stdout] test registry::tests::test_find_by_name ... ok
[INFO] [stdout] test registry::tests::test_find_by_name_not_found ... ok
[INFO] [stdout] test registry::tests::test_find_gateway_by_base_keyword ... ok
[INFO] [stdout] test registry::tests::test_find_gateway_by_key_prefix ... ok
[INFO] [stdout] test registry::tests::test_find_gateway_by_name ... ok
[INFO] [stdout] test registry::tests::test_find_gateway_none ... ok
[INFO] [stdout] test registry::tests::test_label ... ok
[INFO] [stdout] test registry::tests::test_model_overrides_no_match ... ok
[INFO] [stdout] test registry::tests::test_provider_count ... ok
[INFO] [stdout] test openai_compat::tests::test_parse_tool_arguments_empty ... ok
[INFO] [stdout] test openai_compat::tests::test_parse_tool_arguments_invalid ... ok
[INFO] [stdout] test openai_compat::tests::test_parse_tool_arguments_with_fences ... ok
[INFO] [stdout] test openai_compat::tests::test_parse_tool_arguments_valid ... ok
[INFO] [stdout] test registry::tests::test_model_overrides_kimi ... ok
[INFO] [stdout] test registry::tests::test_find_by_model_deepseek ... ok
[INFO] [stdout] test openai_compat::tests::test_resolve_model_gateway_prefix ... ok
[INFO] [stdout] test openai_compat::tests::test_resolve_model_skip_double_prefix ... ok
[INFO] [stdout] test openai_compat::tests::test_apply_model_overrides_kimi ... ok
[INFO] [stdout] test openai_compat::tests::test_resolve_model_no_prefix_needed ... ok
[INFO] [stdout] test openai_compat::tests::test_resolve_model_standard_provider ... ok
[INFO] [stdout] test openai_compat::tests::test_resolve_model_gateway_strip_prefix ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.43s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests nanobot_agent
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests nanobot_channels
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests nanobot_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests nanobot_providers
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "2dfb0159699d4b54d288566f894d570853b2c6eda574fbf0c7589ba32607e07c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2dfb0159699d4b54d288566f894d570853b2c6eda574fbf0c7589ba32607e07c", kill_on_drop: false }`
[INFO] [stdout] 2dfb0159699d4b54d288566f894d570853b2c6eda574fbf0c7589ba32607e07c
